from pathlib import Path
from com.demo1.ai.kimi import ai_base_config as config


def ai_file_demo(path, user_msg):
    sys_msg = "你是 Kimi，是一个专业的文档解读者，你会对任何文档熟透于心，"
    "对文档的内容都能准确理解，并且会根据文档的内容，准确的识别出文档的重点，更可以根据文档生成自己的说明建议"
    return file_ai(path, user_msg, sys_msg)


def ai_msg_demo(path, user_msg):
    sys_msg = "你是 Kimi，是一个绘画、设计、颜色、结构、内容大师，你会对任何图像、图形的设计、细节等熟透于心，"
    "对图片的内容都能准确理解，并且会根据图片的内容，给出一份详细的有关绘画、设计、颜色、结构、内容，"
    "准确的识别出图片的重点，更可以根据图片生成自己的说明建议"
    return file_ai(path, user_msg, sys_msg)


def file_ai(path, user_msg, sys_msg):
    # xlnet.pdf 是一个示例文件, 我们支持 pdf, doc 以及图片等格式, 对于图片和 pdf 文件，提供 ocr 相关能力
    upload_file = Path(path)
    if not upload_file or not upload_file.exists:
        return "文件不存在"
    file_object = config.client.files.create(file=upload_file, purpose="file-extract")
    # 获取结果
    # file_content = client.files.retrieve_content(file_id=file_object.id)
    # 注意，之前 retrieve_content api 在最新版本标记了 warning, 可以用下面这行代替
    # 如果是旧版本，可以用 retrieve_content
    file_content = config.client.files.content(file_id=file_object.id).text

    # print("file_content:{}".format(file_content))
    # 把它放进请求中
    messages = [
        {
            "role": "system",
            "content": sys_msg,
        },
        {
            "role": "system",
            "content": file_content,
        },
        {"role": "user", "content": user_msg},
    ]

    # 然后调用 chat-completion, 获取 Kimi 的回答
    completion = config.client.chat.completions.create(
        model="moonshot-v1-32k",
        messages=messages,
        temperature=0.3,
    )
    # print(completion.choices[0].message)
    return completion.choices[0].message.content
